//package 题目集.图.最短路;
//
//import java.util.*;
//
//public class demo04_小红的矩阵行走 {
//    static int maxn = 510;
//    static int[][] matrix = new int[maxn][maxn];
//    static int n, m;
//    static long[][][] dp = new long[2][maxn][maxn];
//    static Map<Integer, List<int[]>> edges = new HashMap<>();
//    static int[][] move = {
//            {0, 1},
//            {0, -1},
//            {1, 0},
//            {-1, 0},
//    };
//
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        for (long[][] longs : dp) {
//            for (long[] aLong : longs) {
//                Arrays.fill(aLong, -1);
//            }
//        }
//        n = sc.nextInt();
//        m = sc.nextInt();
//        for (int i = 1; i <= n; i++) {
//            for (int j = 1; j <= m; j++) {
//                matrix[i][j] = sc.nextInt();
//                List<int[]> list = edges.get(matrix[i][i]);
//                if (list == null) {
//                    list = new ArrayList<>();
//                    edges.put(matrix[i][j], list);
//                }
//                list.add(new int[]{i, j});
//            }
//        }
//        System.out.println(dfs(0, n, m));
//    }
//
//    public static long dfs(int transfer, int x, int y) {
//        if (dp[transfer][x][y] != -1) {
//            return dp[transfer][x][y];
//        }
//        long res = Long.MAX_VALUE;
//        for (int[] dir : move) {
//            
//        }
//    }
//
//}
